package com.leetcode.contest;

import java.util.Arrays;

/**
 * @author `RKC`
 * @date 2021/11/7 12:47
 */
public class LC5919所有子字符串中的元音 {

    public static long countVowels(String word) {
        //dp[i]代表加入当前字符word[i-1]后相比上一个状态能增加的元音字母个数
        long[] dp = new long[word.length() + 1];
        for (int i = 1; i <= word.length(); i++) {
            char ch = word.charAt(i - 1);
            //如果当前字符不是元音，比如ab，dp[1]=1，而加入b后，只能增加一种情况，也就是ab，dp[2]=1
            //如果当前字符是元音，如aba，相比ab状态，多了a、ba、aba三种状态，因此dp[3]=dp[2]+3
            if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') {
                dp[i] = dp[i - 1] + i;
            } else {
                dp[i] = dp[i - 1];
            }
        }
        System.out.println(Arrays.toString(dp));
        return Arrays.stream(dp).sum();
    }

    public static void main(String[] args) {
        System.out.println(countVowels("noosabasboosa"));
    }
}
